@tool
extends PandoraEntity
class_name BuffData

## 对应脚本
var buff_script: Buff
## 瞬时buff，比如加攻击力
var now_flat_modifiers: Dictionary = {}
## 持续buff，比如中毒
var tick_flat_modifiers: Dictionary = {}

## 持续时间
func get_duration() -> float:
	return get_float("duration")

## 最大层数
func get_max_stacks() -> int:
	return get_integer("max_stacks")
	
## 每次作用间隔
func get_tick_interval() -> float:
	return get_float("tick_interval")

## 获取buff名字
func get_buff_name() -> String:
	return get_string("buff_name")
	
func get_id() -> int:
	return get_integer("id")

func get_buff_script() -> Buff:
	if buff_script != null:
		return buff_script
	buff_script = Buff.new()
	return buff_script

func set_duration(value: float) -> void:
	set_float("duration", value)

func set_max_stacks(value: int) -> void:
	set_integer("max_stacks", value)
	
func set_tick_interval(value: float) -> void:
	set_float("tick_interval", value)

func set_buff_name(value: String) -> void:
	set_string("buff_name", value)
	
func set_id(value: int) -> void:
	set_integer("id", value)

func set_buff_script(value: Buff) -> void:
	buff_script = value

## 添加buff修饰符
func add_now_modifier(stat_name: String, value: float) -> void:
	now_flat_modifiers[stat_name] = value

func add_tick_modifier(stat_name: String, value: float) -> void:
	tick_flat_modifiers[stat_name] = value

## 验证buff数据
func is_valid() -> bool:
	return get_buff_name() != ""
